package cn.stylefeng.roses.kernel.pay.modular.service;

import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.pay.modular.entity.Order;
import cn.stylefeng.roses.kernel.pay.modular.pojo.NotifyRequest;
import cn.stylefeng.roses.kernel.pay.modular.pojo.OrderDTO;
import cn.stylefeng.roses.kernel.pay.modular.pojo.OrderRequest;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 订单 服务类
 *
 * @author stylefeng
 * @date 2021/06/23 22:28
 */
public interface OrderService extends IService<Order> {

    /**
     * 创建订单
     *
     * @author fengshuonan
     * @date 2021/6/23 22:48
     */
    Order createOrder(OrderRequest orderRequest);

    /**
     * 支付接口，生成二维码
     *
     * @return String 二维码图片url
     * @author fengshuonan
     * @date 2021/6/23 22:52
     */
    String pay(OrderRequest orderRequest);

    /**
     * 支付成功的回调
     *
     * @author fengshuonan
     * @date 2021/6/23 22:52
     */
    void payNotify(NotifyRequest notifyRequest);

    /**
     * 获取列表
     *
     * @param orderRequest 请求参数
     * @return List<Order>   返回结果
     * @author stylefeng
     * @date 2021/06/23 22:28
     */
    List<OrderDTO> findList(OrderRequest orderRequest);

    /**
     * 新增
     *
     * @param orderRequest 请求参数
     * @author stylefeng
     * @date 2021/06/23 22:28
     */
    void add(OrderRequest orderRequest);

    /**
     * 删除
     *
     * @param orderRequest 请求参数
     * @author stylefeng
     * @date 2021/06/23 22:28
     */
    void del(OrderRequest orderRequest);

    /**
     * 编辑
     *
     * @param orderRequest 请求参数
     * @author stylefeng
     * @date 2021/06/23 22:28
     */
    void edit(OrderRequest orderRequest);

    /**
     * 查询详情
     *
     * @param orderRequest 请求参数
     * @author stylefeng
     * @date 2021/06/23 22:28
     */
    Order detail(OrderRequest orderRequest);

    /**
     * 获取列表（带分页）
     *
     * @param orderRequest 请求参数
     * @return PageResult<Order>   返回结果
     * @author stylefeng
     * @date 2021/06/23 22:28
     */
    PageResult<Order> findPage(OrderRequest orderRequest);

    /**
     * 取消订单
     *
     * @author fengshuonan
     * @date 2021/6/29 9:27
     */
    void cancelOrder(OrderRequest orderRequest);

    /**
     * 删除订单
     *
     * @author fengshuonan
     * @date 2021/6/29 9:28
     */
    void deleteOrder(OrderRequest orderRequest);

}
